home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / terms / kermit / b / ckcker.2do < prev    next >
Encoding:
Text File  |  1993-06-30  |  13.3 KB  |  235 lines

  1. CKCKER.2DO                                                            June 1993
  2.  
  3.                  C-KERMIT TO-DO LIST
  4.  
  5. Ideas for future releases of C-Kermit (in no special order):
  6.  
  7.  . Clean up and incorporate Fulvio Marino's I/O buffering code,
  8.     and eventually remove the old I/O code.  First for UNIX, then elsewhere.
  9.  . Convert Sys V / POSIX versions to not need ^\ before local-mode file
  10.     transfer interruption commands (do nonblocking reads of console) (now
  11.     possible because of Fulvio's code?)
  12.  . Let Kermit run as a TCP/IP server, instead of FTP, listening on its own
  13.     socket, so it doesn't have to use Telnet - this will make it go MUCH
  14.     FASTER over TCP/IP connections.  Get TCP socket number officially
  15.     assigned.
  16.  . Allow various kinds of network server operation.  By default (in UNIX at
  17.     least), Kermit chroot's to /pub/ftp, user anonymous.  Or maybe also an
  18.     option for no chroot, to allow anonymous access to entire file system,
  19.     based on permissions of individual files and directories (as on most
  20.     non-UNIX systems).  Like ftp server, client can also log in as a specific
  21.     user.
  22.  . Also allow Kermit server to run as user's login shell.
  23.  . Add LOGIN / LOGOUT support in server (it's already in the client);
  24.     in the client, accept LOGIN and LOGOUT as synonyms for REMOTE LOGIN and
  25.     REMOTE LOGOUT.
  26.  . Add a more convenient style of client/server operation, in which SET
  27.     commands given at the client take effect on both the client and the server
  28.     (like the BINARY command, when given to an FTP client).
  29.  
  30.  . Add IF NEWER <file1> <file2> <command>
  31.  . Let Ctrl-L clear and repaint the file transfer display screen
  32.  
  33.  . Add the ability to tell Kermit that a different modem escape sequence is
  34.     in effect (Kermit currently assumes +++, and always uses it when DIAL
  35.     MODEM-HANGUP is ON).  Or let Kermit find out itself by looking at
  36.     S-registers.  Also have it check whether escape sequence is enabled.
  37.  . Add SET MODEM USER-DEFINED.  Just make a blank mdminf structure & pointers
  38.     for it, and then give users SET commands to fill it in.
  39.  . Add SET DIAL COMPRESSION and SET DIAL ERROR-CORRECTION for generic
  40.     enabling/disabling/selection of these items.  Get rid of SET DIAL MNP,
  41.     and incorporate it into the new commands.  These commands should allow
  42.     specification of various methods AND fallback schemes.
  43.  . Add optional system-wide dialing log, for billing dialout modem users.
  44.  . Need a better mechanism for handling speed-matching modems - recognition of
  45.     interface speed AND connect speed, setting of timeouts, etc, accordingly.
  46.  . Make DIAL command return different status codes, depending on whether
  47.     it was busy, no answer, command error, etc (if it's busy or no answer
  48.     you might want to retry, but if it's a command error, you don't).
  49.     Either return different \v(status) codes, or define a new variable
  50.     \v(dial_status).
  51.  . Add a command-line option for phone number to dial.
  52.  . Fix DF2xx modem support for bidirectional orientation in Ultrix 3.1 & later.
  53.  
  54.  . ttinl() is getting its fingers too much into the protocol.  I'd like to
  55.     remove it altogether and just let rpack() do all that stuff, calling
  56.     ttinc() to simply read characters from the communication line, and let
  57.     ttinc() handle all the buffering.  Better yet, let's turn ttinc() into a
  58.     macro that calls some kind of ttfillbuf() routine whenever it needs to.
  59.     This would remove several layers of function calls from the packet i/o,
  60.     and it would let us handle TELNET options during file transfer, etc etc.
  61.     Fulvio's code could come in handy here.
  62.  . Call parchk() only at beginning of transaction, not for each packet.
  63.  . Handshake is done wrong in ttinl().  ttinl() should ALWAYS be length-driven.
  64.     Handshake should be looked for AFTER the packet has been read based on its
  65.     length.  Otherwise we can't use the printable-handshake for DDK.  Once this
  66.     is fixed, allow SET HANDSHAKE CODE accept any number 0..255.
  67.  . Change ck?fio.c to return the text-file byte stream with CRLF delimiters,
  68.     rather than making the system-independent function getpkt() do it.
  69.  . When uploading text files to UNIX, *all* CRs are stripped.  The way it
  70.     SHOULD work is: bare CRs are kept, bare LFs are kept, and only CRLFs are
  71.     treated as line terminators.  This will take a major reworking of decode()
  72.     in ckcfns.c.  It's not obvious how to do this in a clean way, because the
  73.     CRLF might be broken between packets.
  74.  
  75.  . Add Hebrew support.
  76.  . Add SET REPEAT { 0, 2, 3, 4, 5 } to set the repeat-compression threshhold.
  77.  . Make A-packets fit in negotiated packet length (send more than 1 if nec.).
  78.  . Add file protections/permissions to attribute packet processing.
  79.  . Support for "End of attributes" attribute = Attribute "@" (K-370 has it).
  80.  . Add code for breaking outbound attribute string up into more than one
  81.     attribute packet.
  82.  . Add mechanisms for sending and receiving directory trees in a system-
  83.     independent manner.  New protocol must be involved for telling the
  84.     remote Kermit to switch to (and if necessary, create) a new directory.
  85.     Could be something as simple as a new "set file names" option.
  86.     Maybe add code for recognizing and converting VMS, MS-DOS, etc, directory
  87.     names based on system-type field from Attribute packet.  Or preferably,
  88.     devise standard syntax for file specifications.
  89.  
  90.  . Dynamic adjustments of timeouts based on transfer rate, system load, etc.
  91.  . Calculate delay between S and its ACK & use it (e.g. for SLIP connections)
  92.  
  93.  . Design protocol for file transfer checkpointing and add it to the program.
  94.  . Ditto for higher levels of compression.
  95.  
  96.  . Separation of TERMINAL and COMMAND flow control
  97.  . Add RTS/CTS support for more systems.
  98.  . SET COMMAND SHIFT-IN/OUT { OFF, ON } ??? (maybe not necessary)
  99.  
  100.  . Add {...} parsing to SET KEY for leading/trailing spaces.
  101.  . Handle telnet negotiations at all times, even during file transfer...
  102.  . Change zltor() to strip .~nn~ rather than converting it.
  103.  . When sending a file whose name contains international characters, translate
  104.     the name to ASCII.
  105.  . Add a SHOW command for each SET command?
  106.  . Add a way to redirect output of REMOTE commands to a file.
  107.  . Add \v(wordsize) == sizeof(int).
  108.  . Quoted comma ("\,") in macro definition should not cause break to new cmd.
  109.  . Find out what the system's interrupt character is, and refer to it in
  110.     messages, rather than always saying "Ctrl-C", ditto for suspend character.
  111.  . Let user SET the command-editing characters:
  112.     SET COMMAND { CHARACTER-DELETE, WORD-DELETE, LINE-DELETE, REDISPLAY } ...
  113.  . REMOTE SET <file-character-set>.  Needed for anonymous Kermit server.
  114.  . Add Japanese & Chinese ISO 646 (same) as FCS's.
  115.  . Allow multiple actions on command line, e.g. -s, -g, -f...
  116.  . Add IF INPATH <filename> <command>.
  117.  . Add CDPATH handling to CD command (UNIX).
  118.  . System-wide transaction log -- logs all file transfers by all users
  119.     in a common long, showing username, filespec, timestamp, mode, etc.
  120.  . Make log files use the file backup mechanism.
  121.  
  122.  . Make ckufio.c zstime() more flexible (steal code from ck9fio.c).
  123.  . Define a signal people can use to kill Kermit, that it can catch,
  124.     call doexit(), send error packet, whatever....
  125.  . Multiple sessions (network, serial port, etc).
  126.     Session info structure, session manager.
  127.  . INPUT -1 (or 0?) <string> (or something like that) to wait forever.
  128.  . A way of handling multiple INPUT possibilities, including pattern-matching,
  129.    for example:
  130.      MATCH n <pattern> [ var ]
  131.      Pattern :== label regexp [, label regexp [, label regexp [, ... ] ] ]
  132.      Var = variable (\%-style or macro name) to assign match to.
  133.      Examples:
  134.        MATCH 30 {labela login:,labelb more?,labelc term=}
  135.      Or:
  136.        MATCH 30 {aaa A*B, bbb X*Z, ddd [0-9][0-9][0-9]} \%v ; asg match to \%v
  137.      Or:
  138.        MATCH 30 % foo ; match any single char, assign it to macro foo.
  139.    Or some other syntax -- maybe a SWITCH/CASE statement, or allow multiple
  140.      "TRIGGER <pattern> <label>" statements to be in effect (maybe even during
  141.      terminal connection).  A SWITCH/CASE feature should be general-purpose,
  142.      allowing INPUT as the switching variable, but also allowing other 
  143.      variables and conditions too.
  144.   . Make SET / SHOW KEY read extended keys on NeXT, SPARCstation, Mac...
  145.  . SET TRANSLATE command as in MS-DOS Kermit for user-defined character
  146.      translation during CONNECT.
  147.  . addhlp() should break stuff up into separate lines if too long.
  148.  . Add hh:mm:ss argument for PAUSE and WAIT, as in MS-DOS Kermit.
  149.  . Add \ftranslate(string,cs1,cs2) for translating character set?
  150.  . Add SAVE { COMMUNICATIONS, PROTOCOL, ALL } to save settings in TAKE files.
  151.  . Allow more than 9 macro arguments.  Put args in a special array, or SHIFT.
  152.  . Add hook for UNIX file input and output filters, maybe SET { SEND, RECEIVE }
  153.     FILTER <command>.  Use with compress, tar, tr, crypt, etc.
  154.  . Add IF READABLE (like IF EXIST).
  155.  . Add IF DIRECTORY (like IF EXIST).
  156.  . Why does it take so long to exit?  Because of sleep()'s that are required
  157.     to make sure that the mode-restoring stty's, etc, take effect before the
  158.     close() in BSD.  Find some way to do this faster (doesn't seem to be one).
  159.  . Redo input() function to be a state-table switcher?
  160.  . Add cmchar() to parse a character (control or otherwise).
  161.  . Learned scripts - LOG SCRIPT <filename>, CLOSE SCRIPT, record CONNECT
  162.     session as a series of INPUT, PAUSE, OUTPUT, etc, commands.
  163.  . Allow typeahead!
  164.  . Automatically redisplay correct part of bad command?
  165.  . Add command recall (Ctrl-P brings back previous commands, ^N goes forward).
  166.  . Add ON { ERROR, HANGUP, CTRLC, EOF, ... }
  167.  . SET RECEIVE MAIL-COMMAND <template>, with subsitutable parameters.
  168.     Receiver parses {file} and {options} in template, substitutes actual
  169.     filename and options received from client program's MAIL command.
  170.  . Similar idea for SET RECEIVE PRINT-COMMAND.
  171.  . Make UNIX version use pipes for incoming mail and print files.
  172.  . Add more SET FILE NAMES options, like literal but with pathname stripped.
  173.     Allow user to specify a template for fields, capitalization, punctuation.
  174.     Like SET FILE NAME TEMPLATE [[node] sep] [[dev] sep] [[dir] sep] ...
  175.     Or maybe somthing simpler like SET FILE NAMES [UN]CONVERTED [UN]STRIPPED.
  176.  . Add supporting code to SET HOST for SET NETWORK DECNET (VMS, Ultrix).
  177.  . Add supporting code for SET HOST X.25 for VAX PSI and other X.25 products.
  178.  . Add supporting code for SET HOST via ISO/OSI in BSD Networking/2.
  179.  . Find a way in UNIX to check available disk space and refuse incoming files
  180.     that are too big.  Tricky, maybe impossible, for many kinds of UNIX.
  181.  . Internationalize:
  182.      . Segregate all message strings into a separate module, to allow
  183.        translation into other languages - a "resource file"?  Use xstr.
  184.        Complicated because many different character sets can be used
  185.        for each language.
  186.      . Make string comparisons and "tolower"/"toupper" work with int'l
  187.        character sets (inlcuding in INPUT/REINPUT).
  188.      . Fix \v(date) to report date in different languages, formats.
  189.      . Fix \v(day), \v(nday) to handle non-English day names.
  190.      . Fix \v(ndate) to handle non-English month names.
  191.      . GETOK command answers: Yes, Ja, Si, ...
  192.      . etc etc.
  193.  . Implement server end of REMOTE KERMIT.  Means redirecting all Kermit's
  194.     screen output to the packet builder -- no more printf, puts, putc.
  195.  . Reorganize the whole program to define and isolate system depencies better,
  196.     perhaps writing a "sysgen" procedure (like Larry Wall's Configure program).
  197.  . Terminal emulation for UNIX workstations: key definition, screen rollback,
  198.     printer control, etc.  This has already been done for Macintosh and OS/2.
  199.     Requires separate ck?con.c for each kind of workstation.
  200.  . IBM 3270 terminal emulation: tn3270, perhaps others.
  201.  . Add support for Kerberos authentication (see 4.4BSD telnet).
  202.  . Write an alternate ckucmd.c that produces screen menus rather than
  203.     interactive commands, given the same command calls (cmkey, cmtxt, cmnum,
  204.     cmcfm, etc).  For UNIX ttys, use the curses library.  For NeXT, Macintosh,
  205.     Amiga, OS/2 PM, SPARCstations, etc, make real pop-up menus, allow mouse
  206.     input, etc. 
  207.  . An X-Windows server/client interface?  SunView?  Motif?  NextStep?  etc?
  208.  . Before even thinking about the two items above, design a standard for what
  209.     the interface should look like. 
  210.  
  211. How to do user-defined translations:
  212.  SET FILE CHARACTER-SET USER-DEFINED
  213.  SET XFER CHARACTER-SET <valid-xfer-charset>
  214.  SET USER-TRANSLATION FROM <tcs> xxx yyy ; for incoming files
  215.  SET USER-TRANSLATION TO   <tcs> yyy xxx ; for outbound files
  216.  Applies to <tcs> + USER-DEFINED FCS.
  217.  Can have one pair for each TCS.
  218.  Now announcements work right, etc etc.
  219.  DUMP USER-TRANSLATION <tcs>  [ <file> ]  ; list tables (to file)
  220. For C-Kermit, we have 4 TCS's, so 8 x 2 x 256 = 2K bytes, not bad:
  221.  . Add FC_USER FCS
  222.  . Add 6 tables (not supported for Kanji)
  223.  . Initialize each table to identity function
  224.  . Add 8 functions (even for TRANSPARENT, but NULL for Kanji)
  225.  . Figure out a way of telling user whether table has been defined.
  226.  . Add SHOW USER-TRANSLATION <tcs> [ <file> ]
  227.    (= a bunch of SET USER-TRANSL commands, with comments)
  228.  . Add DUMP USER-TRANSLATION <tcs> [ <file> ]
  229.    (= just the numbers, comma-separated? space-separated? one per line?)
  230.  . Add LOAD USER-TRANSLATION <tcs> <file>
  231.    (= read table written by DUMP, watch out for value and table-size overflow) 
  232.  . Add some kind of built-in test pattern?
  233.  
  234. (End of CKCKER.2DO)
  235.